package com.guyu.plugin.sms.suoyou.utils;

import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.MD5;
import com.guyu.plugin.sms.suoyou.config.SuoyouConfig;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class SuoyouUtils {

    /**
     * 生成安全签名
     */
    public static String generateSign(SuoyouConfig suoyouConfig) {
        MD5 md5 = SecureUtil.md5();
        return md5.digestHex(suoyouConfig.getAccessKeyId() + suoyouConfig.getAccessKeySecret());
    }

    /**
     * 生成安全签名
     */
    public static String generateContent(SuoyouConfig suoyouConfig, String message) {
        return "【" + suoyouConfig.getSignature() + "】" + message;
    }

    /**
     * 生成请求body参数
     *
     * @param suoyouConfig 配置数据
     * @param phone        手机号
     * @param message      短信内容
     */
    public static Map<String, Object> generateParamMap(SuoyouConfig suoyouConfig, String phone, String message) {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("appid", suoyouConfig.getAccessKeyId());
        paramMap.put("mobile", phone);
        paramMap.put("sign", generateSign(suoyouConfig));
        paramMap.put("content", URLUtil.encode(Base64.encode(generateContent(suoyouConfig, message))));
        return paramMap;
    }

    /**
     * 生成短信内容
     *
     * @param messages 短信内容
     */
    public static String generateMessage(SuoyouConfig suoyouConfig, LinkedHashMap<String, String> messages) {
        return StrUtil.format(suoyouConfig.getTemplateContent(), messages);
    }
}
